package com.dpac.core.tags;

import static freemarker.template.ObjectWrapper.DEFAULT_WRAPPER;

import java.util.HashMap;
import java.util.Map;

import com.dpac.core.util.LoggerUtils;
import com.dpac.core.util.SpringContextUtil;

import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;

/**
 * @title Freemarker 自定义标签 API公共入口
 * @description 请填写相关描述
 * @creator lils
 * @date 2017年8月17日 下午4:02:23
 */
public class APITemplateModel extends WYFTemplateModel {

	@Override
	@SuppressWarnings({ "unchecked", "deprecation" })
	protected Map<String, TemplateModel> putValue(@SuppressWarnings("rawtypes") Map params) throws TemplateModelException {

		Map<String, TemplateModel> paramWrap = null;
		if (null != params && params.size() != 0 || null != params.get("target")) {
			String name = params.get("target").toString();
			paramWrap = new HashMap<String, TemplateModel>(params);
			/**
			 * 获取子类，用父类接收，
			 */
			SuperCustomTag tag = SpringContextUtil.getBean(name, SuperCustomTag.class);
			// 父类调用子类方法
			Object result = tag.result(params);
			// 输出
			paramWrap.put("outTagName", DEFAULT_WRAPPER.wrap(result));
		} else {
			LoggerUtils.error(getClass(), "Cannot be null, must include a 'name' attribute!");
		}
		return paramWrap;
	}

}
